package com.servitware.cardio.config;

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;

public class WorkingDirsFileManager
{
	private WorkingDirs wDirs;
	
	public WorkingDirsFileManager(WorkingDirs wDirs)
	{
		this.wDirs=wDirs;
	}
	
	/**
	 * Basicamente en este sistema no se usa, es invocada por las funciones <code>moveToxxxx()</code>
	 * 
	 * @param fileName
	 * @param orig
	 * @param dest
	 */
	public void moveFileToDir(String fileName, Directorios orig, Directorios dest)
	{
		
		File from = new File( wDirs.getDir( orig.getid() ) + WorkingDirs.SEPARATOR + fileName );
		if( !from.exists() )
			return;
		
		if( !wDirs.getDir(dest.getid()).exists() || !wDirs.getDir(dest.getid()).isDirectory() )
			return;
		
		File to = new File( wDirs.getDir( dest.getid() ) + WorkingDirs.SEPARATOR + fileName );
		
		try
		{
			FileUtils.copyFile( from, to );
			from.delete();
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
	}

	
	public void moveToEnProceso( String fileName )
	{
		moveFileToDir( fileName, Directorios.Pendiente, Directorios.En_Proceso);	
	}

	public void moveToEnProcesado( String fileName )
	{
		moveFileToDir( fileName, Directorios.En_Proceso, Directorios.Procesado );	
	}
	
	public void moveToSuspendido( String fileName )
	{
		moveFileToDir( fileName, Directorios.En_Proceso, Directorios.Suspendido );	
	}
	
	public void moveToSubido( String fileName )
	{
		moveFileToDir( fileName, Directorios.Procesado, Directorios.Subido );	
	}
		
	public void moveToRecuperarEnProceso( String fileName )
	{
		moveFileToDir( fileName, Directorios.Suspendido, Directorios.En_Proceso );	
	}
		


}
